package com.bajie.bjlisten.mapper;

import com.bajie.bjlisten.entity.BjSign;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import javax.transaction.Transactional;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface BjSignMapper {

    /**
     * 用户签到：保存
     * @param bjSign
     * @return
     */
    @Transactional
    int saveSign(BjSign bjSign);

    /**
     * 增加用户签到一次:就是更新表签到次数字段
     * @param userId
     * @return
     */
    @Transactional
    int addSignTimes(@Param("userId") String userId);

    /**
     * 更新用户的金币情况
     * @param userId
     * @param coin
     * @return
     *//*
    int updateCoin(@Param("userId") String userId,@Param("coin") int coin);*/

    /**
     * 根据用户近30天的签到信息
     * @param userId
     * @return
     */
    List<BjSign> findSign30Days(@Param("userId") String userId);

    /**
     * 查询近7天的签到纪录
     * @param userId
     * @return
     */
    List<BjSign> findSign7days(@Param("userId") String userId);

    /**
     * 查询今天的签到情况
     * @param userId
     * @return
     */
    BjSign findSignToday(@Param("userId") String userId);

    /**
     * 查询昨天的签到情况
     * @param userId
     * @return
     */
    BjSign findSignYestoday(@Param("userId") String userId);

    /**
     * 根据签到主键查询签到纪录
     * @param id
     * @return
     */
    BjSign findById(@Param("id") String id);

    /**
     * 根据用户查询金币总数
     * @param userId
     * @return
     */
    Map<String, BigDecimal> findSumCoinByUserId(@Param("userId") String userId);


    /**
     * 根据提供的月份查询用户的签到纪录
     * @param userId
     * @param month
     * @return
     */
    List<BjSign> findSignByMonth(@Param("userId") String userId,@Param("month") String month);

}
